package com.yd.app.mapper.provider;

import java.text.MessageFormat;
import java.util.List;

/**
 * Created by zq on 2016/4/27.
 */
public class BaseProvider {

    /**
     * 生成in查询的in部分sql语句，如： （‘1’，‘2’）
     * @param listParamName 列表参数名
     * @param list 列表参数
     * @return
     */
    public String createInSql( String listParamName,List<String> list){
        StringBuilder sb=new StringBuilder(" (");
        for(int i=0;i<list.size();i++){
            sb.append("#{"+listParamName+"["+i+"]}");
            if(i<(list.size()-1)){
                sb.append(",");
            }
        }
        sb.append(") ");
        return sb.toString();
    }

    /**
     * 生成批量添加的sql语句，只生成values后面的句子，如：(#'{'list[{0}].paperId},#'{'list[{0}].quizId})
     * @param listParamName 列表参数名
     * @param params 参数列表
     * @param fields 要添加的字段，需和params里面的对象字段对应
     * @return
     */
    public String createBatchAddValuesSql(String listParamName,List params,String...fields){
        StringBuilder sb=new StringBuilder();
        String tempModel=listParamName+"[{0}]";
        StringBuilder sqlTemplate=new StringBuilder(" (");
        for (int i = 0; i < fields.length; i++) {
            sqlTemplate.append("#'{'").append(tempModel).append(".").append(fields[i]).append("}");
            if (i < fields.length - 1) {
                sqlTemplate.append(",");
            }
        }
        sqlTemplate.append(")");
        MessageFormat messageFormat = new MessageFormat(sqlTemplate.toString());
        for (int i = 0; i < params.size(); i++) {
            sb.append(messageFormat.format(new Object[] { i }));
            if (i < params.size() - 1) {
                sb.append(",");
            }
        }
        return sb.toString();
    }
    public void addFenyeSql(StringBuffer buffer){
        buffer.append(" limit #{startRow},#{pageSize} ");
    }
}
